Skip to content

feat(nodejs): add base images for Node.js weblogs#7013

Merged
cbeauchesne merged 5 commits into
mainfrom
rochdev/feat-nodejs-base-images
Jun 3, 2026
Merged

feat(nodejs): add base images for Node.js weblogs#7013
cbeauchesne merged 5 commits into
mainfrom
rochdev/feat-nodejs-base-images

Conversation

@rochdev
Copy link
Copy Markdown
Member

@rochdev rochdev commented May 22, 2026

Summary

  • Adds *.base.Dockerfile files for express4, express5, fastify, express4-typescript, and nextjs weblogs
  • Base images use bun for dependency installation with frozen lockfiles
  • Adds docker-bake.hcl for building all base images at once
  • Adds build_nodejs_base_images.sh script
  • Updates CI (ci.yml, system-tests.yml) with a build-nodejs-base-images label trigger
  • Updates get_pr_merged_labels.sh to handle the new label
  • Main Dockerfiles are simplified to FROM datadog/system-tests:<weblog>.base-v1

Dependencies

  • Should be merged after #7011 (gzip→zst) since it uses zstd in build.sh

Notes

Test plan

  • Add the build-nodejs-base-images label and verify base images build in CI
  • Verify weblogs using FROM datadog/system-tests:express4.base-v1 build and run correctly

🤖 Generated with Claude Code

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

CODEOWNERS have been resolved as:

utils/build/build_nodejs_base_images.sh                                 @DataDog/system-tests-core
utils/build/docker/nodejs/docker-bake.hcl                               @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4-typescript.base.Dockerfile           @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4-typescript/bun.lock                  @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4.base.Dockerfile                      @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4/bun.lock                             @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express5.base.Dockerfile                      @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express5/bun.lock                             @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/fastify.base.Dockerfile                       @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/fastify/bun.lock                              @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/nextjs.base.Dockerfile                        @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/nextjs/bun.lock                               @DataDog/dd-trace-js @DataDog/system-tests-core
.github/workflows/ci.yml                                                @DataDog/system-tests-core
.github/workflows/system-tests.yml                                      @DataDog/system-tests-core
docs/edit/update-docker-images.md                                       @DataDog/system-tests-core
utils/build/docker/nodejs/express4-typescript.Dockerfile                @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4.Dockerfile                           @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express5.Dockerfile                           @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/fastify.Dockerfile                            @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/nextjs.Dockerfile                             @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/uds-express4.Dockerfile                       @DataDog/dd-trace-js @DataDog/system-tests-core
utils/scripts/get_pr_merged_labels.sh                                   @DataDog/system-tests-core

@datadog-official
Copy link
Copy Markdown

datadog-official Bot commented May 22, 2026

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 43 Pipeline jobs failed

Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.2 1   View in Datadog   GitHub Actions

See error 10 probes are not emitting: {'log539e5-6c08-4b42-a198-6a7f2ef71805': 'RECEIVED', 'loga1321-5244-4cd6-9dcf-94aa5cf8f1d2': 'RECEIVED', 'log85b98-0859-4b42-a4f0-5feabcac5668': 'RECEIVED', 'log926e5-7493-4f2f-bbc8-a80ab71a578e': 'RECEIVED', 'log9ca2a-3500-4734-9fe0-289c41f5278d': 'RECEIVED', 'log94e98-07da-4cc3-85f0-c8fe3232d610': 'RECEIVED', 'log422c7-4d1c-4a4e-ba83-d6712789f6d1': 'RECEIVED', 'logfbe45-9ef2-4e9f-b311-1ca4e8ecc9bf': 'RECEIVED', 'log975c8-1531-4821-99f8-5ea1f6ae75eb': 'RECEIVED', 'logd26d2-2eb7-4793-bcfd-924eac63192a': 'RECEIVED'}

🧪 1 Test failed

tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions.test_complex_capture_expressions[apache-mod-7.2] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: assert &#39;Probes did not reach INSTALLED status&#39; is None
 &#43;  where &#39;Probes did not reach INSTALLED status&#39; = &lt;built-in method join of str object at 0x7f60f502b720&gt;([&#39;Probes did not reach INSTALLED status&#39;])
 &#43;    where &lt;built-in method join of str object at 0x7f60f502b720&gt; = &#39;\n&#39;.join
 &#43;    and   [&#39;Probes did not reach INSTALLED status&#39;] = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f60ec8c5040&gt;.setup_failures

self = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f60ec8c5040&gt;

    def test_complex_capture_expressions(self):
&gt;       self._assert()

...

Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.3-zts 1   View in Datadog   GitHub Actions

See error 11 probes are not emitting: {'log6711f-f528-4c82-993e-5fec41f4cd76': 'INSTALLED', 'log5e0f6-efb8-4fcc-a790-f8f2a1fc2170': 'INSTALLED', 'logb423b-552e-4fdc-800c-db77df7ee05e': 'INSTALLED', 'log87af9-fa33-4fdd-8bad-13de271273c0': 'INSTALLED', 'log58245-03aa-4e8c-990f-116884f7db87': 'INSTALLED', 'log08c9b-b68e-49d7-9c36-632f492a9f8f': 'INSTALLED', 'log6b730-1b03-4d81-8438-bce22b07771d': 'INSTALLED', 'log2ad66-6cf3-4f2d-b1a2-bd9b3c7fd5b5': 'INSTALLED', 'logd2eae-0b5f-4f45-b3a9-d10a98c20af6': 'INSTALLED', 'logabd36-32a5-45ed-936a-430c8d7c56be': 'INSTALLED', 'log691eb-6932-405d-a201-dbf96620c00c': 'INSTALLED', 'logc1c9b-d28d-4f1c-ad63-9eeb470b10ad': 'INSTALLED', 'log4f3f6-99c1-4ebe-a87a-d1aaa1c0886c': 'INSTALLED', 'log84566-299b-4f00-a313-530310075c27': 'INSTALLED', 'log4fba6-5feb-4e19-858f-cf5bddbcc3ea': 'INSTALLED', 'logfe519-c2a0-4755-9895-82a2005b08eb': 'INSTALLED', 'log2ad1e-3c64-433b-afce-49ea053080b8': 'INSTALLED', 'logb5080-2420-4698-925c-013b263666a7': 'INSTALLED', 'log3a1b9-b103-4c5d-b658-e1597d4fc126': 'INSTALLED', 'log62143-af52-41f0-919d-5fd66c4b4408': 'INSTALLED', 'log0bd9e-d632-4739-a479-fa7b629e794b': 'INSTALLED', 'log70e1d-0ef7-47f9-9fd0-e523b88067bc': 'INSTALLED', 'log6a7a1-3444-4d8d-8844-a20edb043b02': 'INSTALLED', 'log48dc4-1676-452f-89c7-e81822f555b2': 'INSTALLED', 'logd4c99-c05e-4d08-971a-d51f2a2393e0': 'INSTALLED', 'log2c334-20bb-4b47-bd58-a284b93fd6b0': 'INSTALLED'}

🧪 1 Test failed

tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions.test_complex_capture_expressions[apache-mod-7.3-zts] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: assert &#39;Probes did not reach INSTALLED status&#39; is None
 &#43;  where &#39;Probes did not reach INSTALLED status&#39; = &lt;built-in method join of str object at 0x7f592c62b720&gt;([&#39;Probes did not reach INSTALLED status&#39;])
 &#43;    where &lt;built-in method join of str object at 0x7f592c62b720&gt; = &#39;\n&#39;.join
 &#43;    and   [&#39;Probes did not reach INSTALLED status&#39;] = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f591e6849e0&gt;.setup_failures

self = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f591e6849e0&gt;

    def test_complex_capture_expressions(self):
&gt;       self._assert()

...

Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-8.2-zts 1   View in Datadog   GitHub Actions

See error 13 tests failed due to missing probe emissions from expected ids: log08104-a774-49a7-8040-2b15c60ef21f, log2f500-0e5e-4584-9a88-d8310a5b3b74, log77357-0c70-4ab8-a0e2-61669c4582bf, logb9ad8-1ab0-4ad3-b483-222c161879b5, log38533-8780-4af4-ae47-baf4968968e0 and others.

🧪 1 Test failed

tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions.test_complex_capture_expressions[apache-mod-8.2-zts] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: assert &#39;Probes did not reach INSTALLED status&#39; is None
 &#43;  where &#39;Probes did not reach INSTALLED status&#39; = &lt;built-in method join of str object at 0x7f750382b720&gt;([&#39;Probes did not reach INSTALLED status&#39;])
 &#43;    where &lt;built-in method join of str object at 0x7f750382b720&gt; = &#39;\n&#39;.join
 &#43;    and   [&#39;Probes did not reach INSTALLED status&#39;] = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f74f57a2ba0&gt;.setup_failures

self = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f74f57a2ba0&gt;

    def test_complex_capture_expressions(self):
&gt;       self._assert()

...

View all 43 failed jobs.

🧪 1 Test failed in 1 job

Testing the test | main   GitHub Actions

tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions.test_complex_capture_expressions[apache-mod-7.2-zts] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: assert &#39;Snapshot was not received&#39; is None
 &#43;  where &#39;Snapshot was not received&#39; = &lt;built-in method join of str object at 0x7f009042b720&gt;([&#39;Snapshot was not received&#39;])
 &#43;    where &lt;built-in method join of str object at 0x7f009042b720&gt; = &#39;\n&#39;.join
 &#43;    and   [&#39;Snapshot was not received&#39;] = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f0088950620&gt;.setup_failures

self = &lt;tests.debugger.test_debugger_capture_expressions.Test_Debugger_Method_Capture_Expressions object at 0x7f0088950620&gt;

    def test_complex_capture_expressions(self):
&gt;       self._assert()

...

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 8c388b2 | Docs | Datadog PR Page | Give us feedback!

Introduces pre-built base images for Node.js weblogs (express4, express5,
fastify, express4-typescript, nextjs) published to Docker Hub via a bake
file. Adds build_nodejs_base_images.sh script and CI integration with
a build-nodejs-base-images label trigger.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@rochdev rochdev force-pushed the rochdev/feat-nodejs-base-images branch from 25fba47 to fc96ec9 Compare June 3, 2026 04:37
The special case tried to save the base image before it was pulled
locally, causing docker save to fail silently through the pipe and
produce an empty tarball. The end-to-end job then failed to load it.

The standard flow (build full weblog, save system_tests/weblog) already
handles nodejs correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@rochdev rochdev marked this pull request as ready for review June 3, 2026 05:24
@rochdev rochdev requested review from a team as code owners June 3, 2026 05:24
Comment thread utils/build/build.sh Outdated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@cbeauchesne cbeauchesne merged commit 9f9aeae into main Jun 3, 2026
1961 of 2070 checks passed
@cbeauchesne cbeauchesne deleted the rochdev/feat-nodejs-base-images branch June 3, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants